package linearlist;

/**
 * @Author Zhouchb
 * @Create 2021-10-2021/10/27 :10:42
 * @Description
 */
public class SequenceList<T> {
    private T[] eles;
    private int N;

    //创建容量为capacity的SequenceList对象
    public SequenceList( int capacity) {
        this.eles = (T[]) new Object[capacity];
        N = 0;
    }
    //置空线性表
    public void clear(){
        this.N=0;
    }
    //判断线性表是否为空，是返回true，否返回false
    public boolean isEnpty(){
       return N>0?true:false;
    }

    //获取线性表中元素的个数
    public int length(){
        return N;
    }
    //读取并返回线性表中的第i个元素的值
    public T get(int i){
        return eles[i];
    }

    //在线性表的第i个元素之前插入一个值为t的数据元素
    public void insert(int i,T t){
        for (int j=N;j>i;j--){
            eles[j+1]=eles[j];
        }
        eles[i]=t;
        N++;
    }
    //向线性表中添加一个元素
    public void insert(T t){
        eles[N++]=t;
    }
    //删除并返回线性表中第i个数据元素
    public T remove(int i){
        T t2 = eles[i];
        for (int j=i;j<N-1;j++){
            eles[j]=eles[j+1];
        }
        N--;
        return t2;
    }
    //返回线性表中首次出现指定数据的序号，若不存在，返回-1
    public int indexOf(T t){
        for (int i=0;i<N;i++){
            if (eles[i].equals(t)){
                return i;
            }
        }
        return -1;
    }


}
